package com.atguigu_b_trainstation_sync;

public class SellTicket implements Runnable{//任务的类
    //准备票
    int ticket = 100; // 1. 加static  或者 2. 只创建一次SellTicket对象
    //锁对象可以是任意的引用数据类型对象 [不能是基本数据类型] 且唯一并被共享
    Object lock = new Object(); // 1. 加static  或者 2. 只创建一次SellTicket对象
    @Override
    public void run() {
        //表示火车站不关门
        while(true){

            synchronized (lock){
                //判断票数是否大于 0
                if (ticket > 0){
                    //为了让问题更加明显 , 在售票之前让线程休眠一下
                    try {
                        Thread.sleep(300); //线程放弃CPU的执行权
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }

                    //售票
                    System.out.println(Thread.currentThread().getName() + " 正在卖第 " + ticket + "票 ! ");

                    //真正售票语句
                    ticket--;
                }
            }

        }
    }
}
